package com.yj.springbootstudy.config;

import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;

/**
 * @see org.springframework.context.annotation.Condition
 * 使用Conditional 注解我们可以指定组件注册的条件，满足特定条件才能将组件纳入到IOC容器中
 */
public class MyCondition implements Condition {
    /**
     *
     * @param conditionContext:上下文信息
     * @param annotatedTypeMetadata:注解信息
     * @return
     */
    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        //在Windows环境下，User这个组件将被成功注册，如果是别的操作系统，这个组件将不会被注册到IOC容器中。
        String osName = conditionContext.getEnvironment().getProperty("os.name");
        return osName != null && osName.contains("Windows");
    }
}
